package algorithm.array;

/**
 * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
 *
 * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
 *
 * 示例 1：
     *输入：nums = [1,1,2]
     * 输出：2, nums = [1,2]
     * 解释：函数应该返回新的长度 2 ，并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class RemoveDuplicate {

    public static void main(String[] args) {

        int [] arr = new int []{1,2,3,4,4,5,6,666,6,6,6,6,6,6};
        removeDuplicates(arr);
        for (int a : arr) {
            System.out.print(a+",");
        }
    }

    public static int removeDuplicates(int[] nums) {

        int low=0,fast=1;
        while(fast<nums.length){
            if(nums[fast]!=nums[fast-1]){
                low++;
                nums[low]=nums[fast];
            }

            fast++;
        }

        return low+1;//low从0开始的
    }
}
